Tableau Serverのキャッシュ設定を理解する #tableau
はじめに
こんにちは。大阪オフィス唯一のDI部メンバー、tamaです。
本エントリは、Tableau Server Qualified Associateの試験ガイド「評価するスキル」に関連する内容となります。
- ※2018年4月にバージョン2018.1がリリースされましたが、2018年5月現在のTableau Server Qualified Associateはバージョン10.5が対象のため、バージョンで異なる仕様や挙動については、バージョン10.5を対象にしています。
本エントリの概要
今回は試験ガイドの「キャッシュ設定を理解する」についてです。今回は低ボリュームの小ネタ気味のエントリとなります。
Tableau Serverにおけるキャッシュ
Tableau Serverは、Webブラウザでワークブック(ダッシュボード、ビューなど)を見ることができます。ユーザーは、そのビューを操作(フィルタを変えるなど)すると、その時にクエリされて取得したデータがキャッシュされます。そのユーザーや他のユーザーは、そのビューを見る時、再度そのデータを取得しにいくのではなく、キャッシュされたデータで代用できそうだ、となった場合、キャッシュが使用されます。
キャッシュが使用される時、いちいちクエリを発行するまでもなく、データの表示が可能になるため、非常に早くビューを表示することは可能です。ただし、キャッシュはキャッシュなので、そのデータが頻繁に更新されているような場合、実データより古いデータが表示されてしまうことになります。
ビューの表示スピードを優先するか、最新のデータを表示するか、このバランスは、組織のデータ分析における要件に応じて決めていかないといけません。
3つのキャッシングオプション
Tableau Serverには、3つのキャッシュの設定があります。先程も述べたように、自組織の要件に合わせて、どれが一番ベストな設定か、考える必要があります。
Tableau Server Configurationの「Data Connections」タブで、全てのデータ接続に適用されるキャッシングを設定します。
Refresh less often(更新頻度を減らす)
キャッシュが利用可能な場合は、いつでもデータはキャッシュ・再利用されます。 基本的にキャッシュがよく使われるので、結果的にデータベースに送信されるクエリの数を最小限に抑えます。 使用しているデータが頻繁に更新されない場合は、このオプションがいいと思います。
このオプションの注意点は以下です。
- キャッシュの保持は最大2時間
- 発行されるクエリ自体が早い場合は、キャッシュされない
- 発行されるクエリ(で取得できるデータ)が16MBを超える場合は、キャッシュされない
Balanced(バランス)
キャッシュを保持する時間を、任意の時間で指定できるオプションです。指定時間内にアクセスがあった場合はキャッシュが使用され、時間外だった場合は、再度データソースから新しいデータから取得されます。
Refresh More Often(更新頻度を増やす)
キャッシュを使用しません(キャッシュを保持しない)。常にデータソースからデータを取得しに行きます。ですので、常に最新のデータが表示されることになります。同時アクセスユーザーが多い場合は、このオプションは避けた方がよいです。(クエリ発行数が多くなり、パフォーマンスが著しく低下するおそれがある)
初期SQL
初期SQLとは
まず、そもそも初期SQLとは何でしょうか。これは、一部のデータソースに限り、最初にデータソースにアクセスする際(ワークブックの表示や、抽出の更新などのタイミング)に発行されるクエリです。
どういう時にこれを使用するのかというと、この初期SQLでは、Tableau Serverのユーザー名等をパラメーターとして渡すことができます。これを使用することで、データソース自体へのアクセスを、そのユーザーの権限内のみに絞ることが可能になります。Tableauにはユーザーフィルターという機能がありますが、それと似たようなことがデータソースへの接続時に利用できるということですね。
ちなみに、初期SQLに対応しているデータソースの場合、接続時に下記のような表示が出ます。ここで、初期SQLを設定することができます。
また、初期SQLは、カスタムSQLとは別物ですので、注意しましょう。
初期SQLの設定
本題ですが、キャッシュオプションの下に、初期SQLという設定があります。簡単に言うと、これにチェックをすると、初期SQLを無効にすることができます。
無効にする理由としては以下のようなことが挙げられます。
- 一部のデータソース(Teradataなど)では、初期SQLを設定していると、利用費が高騰するおそれがある
- セキュリティ上の理由で初期SQLを発行させたくない
- パフォーマンスの理由で初期SQLを発行させたくない
- 例えば、上述したように、ユーザー名をパラメータとして渡して、そのユーザー限定のデータ接続を設定している場合、キャッシュを別ユーザーと共有することができなくなり、キャッシュのヒット率が大幅に下がるため、パフォーマンスが低下する可能性があります。
おわりに
今回はTableau Serverのキャッシュ設定について見てきました。キャッシュ一つとっても、管理者にとっては、結構吟味しなければならない内容なのではないでしょうか、ぜひ、どういうデータ分析を進めていきたいのか…という要件と照らし合わせて、決めていただければと思います。